package com.hz.web.service.impl;

import java.io.File;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONObject;
import com.hz.web.dao.EnterpriseDao;
import com.hz.web.entity.EnterpriseEntity;
import com.hz.web.service.IenterpriseService;
import com.hz.web.util.Constant;
import com.hz.web.util.Excel;
import com.hz.web.util.Uid;
import com.hz.web.util.UtilMethods;

/**
 * 企业红黑名单impl层
 * @author Administrator
 *
 */
@Service
public class EnterpriseImpl implements IenterpriseService {

	@Resource
	private EnterpriseDao enterpriseDao;
	
	/**
	 * 查询企业单位红黑名单信息
	 * @param parms Map<String, Object>
	 * @return
	 */
	@Override
	public List<EnterpriseEntity> queryEnterprise(Map<String, Object> parms) {
		return enterpriseDao.queryEnterprise(parms);
	}

	/**
	 * 查询企业单位红黑名单信息总条数
	 * @param parms Map<String, Object>
	 * @return
	 */
	@Override
	public int queryEnterpriseCount(Map<String, Object> parms) {
		return enterpriseDao.queryEnterpriseCount(parms);
	}

	/**
	 * 批量插入企业单位红黑名单信息
	 * @param list 企业单位实体类集合
	 * @return
	 */
	@Override
	public int addBatchEnterprise(List<EnterpriseEntity> list) {
		return enterpriseDao.addBatchEnterprise(list);
	}

	/**
	 * 修改企业单位红黑名单信息 
	 * @param entity 企业单位实体类
	 * @return
	 */
	@Override
	public int updateEnterprise(EnterpriseEntity entity) {
		return enterpriseDao.updateEnterprise(entity);
	}

	/**
	 * 解析excle
	 */
	@Override
	public JSONObject fileLoadExcle(String url, String type,HttpServletRequest request)
			throws ParseException {
		JSONObject json = new JSONObject();
		json.put("code","200");
		// ------------------------------------------------------------
		String path = request.getSession().getServletContext().getRealPath("");
		path = path + File.separator + "them" + File.separator
				+ "fileload_excle";
		String filePath = path + File.separator + url;
		// 从excl表格中读取数据
		Excel poi = new Excel();
		List<List<String>> list = poi.read(filePath);
		List<EnterpriseEntity> resultList = new ArrayList<EnterpriseEntity>();
		int hang = 0;
		for (List<String> list2 : list) {// 行
			hang++;
			List<String> cellList = list2; // 列
			EnterpriseEntity entity = new EnterpriseEntity();
			for (int i = 0; i < cellList.size(); i++) {
				
				int lie = i + 1;
				if (lie > 7) {
					break;
				}
				String value = cellList.get(i);
				if(value==null){
					break;
				}
				value = value.replaceAll("\\s*", ""); //去空格
				if (hang == 1) {
					//如果对应的列名不对，就删除，说明上传错文件了，只判断了第一列
						if(!Constant.EXCLE_ENTERPRISE_NAME.equals(value)){
							json.put("code","300");
							UtilMethods.delFile(filePath);
							return json;
						}
				}
				if(hang==1){
					break;
				}
				
				if (lie == 1) {
					entity.setDepartmentName(value);;//部门名称
				}else if (lie == 2) {
					entity.setEnterpriseName(value);//单位名称
				}else if (lie == 3) {
					int index = value.indexOf(".");
					if(index==-1){
						entity.setOrganizationCode(value);//组织机构代码
					}else{
						value = value.substring(0, index);
						entity.setOrganizationCode(value);//组织机构代码
					}
				}else if (lie == 4) {
					entity.setProjectName(value);//黑名单或者红名单项目名称
				}else if (lie == 5) {
					entity.setReason(value);//列入红黑名单原因
				}else if (lie == 6) {
					entity.setAddDate(value);//列入红黑名单日期
				}else if (lie == 7) {
					entity.setValidity(value);// 黑名单有效期
				}
			}
			//处理的是企业单位的信息，所有单位名称肯定是不能为空的
			if(entity.getEnterpriseName()!=null && !"".equals(entity.getEnterpriseName().trim())){
				entity.setSysId(Uid.getUid());
				entity.setType(type);//部门id
				resultList.add(entity);
			}else{
				if(hang !=1){
					json.put("code","400");
					UtilMethods.delFile(filePath);
					return json;
				}
			}
		}

		int count = -1;
		try {
			if(resultList.size()==0){
				count=0;
			}else{
				count = addBatchEnterprise(resultList);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			json.put("count", count);
			UtilMethods.delFile(filePath);
		}
		return json;
	}
}
